//
//  CCUIView.h
//  CCFC_IPHONE
//
//  Created by  xuchen(陈旭)， xichen(陈曦)， qq：511272827 on 10-10-28.
//  Copyright 2010 cc_team. All rights reserved.
//
#ifndef	CC_UI_VIEW
#define	CC_UI_VIEW

#include "CCAll.h"

// 一个常用的字体大小
#define	COMMON_FONT_SIZE	16.0f

#ifdef OBJC_MACRO

// 创建字体对象
#define	CREATE_FONT(fontSize)	[UIFont systemFontOfSize:(fontSize)]

// 增加设备翻转的回调
#define	ADD_ORITENTATION_NOTIFICATION(idName, selectorName, objectInfo)	\
	[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];	\
	[[NSNotificationCenter defaultCenter] addObserver:(idName) selector:(selectorName)	\
											 name:@"UIDeviceOrientationDidChangeNotification" object:(objectInfo)];

// 不允许设备翻转后界面跟着翻转
#define	ADD_ORITENTATION_NOT_ALLOW_AUTOROTATE	\
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation	\
{		\
	return (toInterfaceOrientation == UIInterfaceOrientationPortrait);	\
}

#ifdef	__cplusplus
extern "C" {
#endif

	//设置全屏幕的背景(不包括状态栏)
	void setMainScrBgImg(UIView *mainScrView, NSString *imgName);
	
	// 设置UIView的背景图片 NB.可能背景会出现一条黑线
	void setViewBgImg(UIView *view, NSString *imgName);
	
	// 设置view为圆角状态
	void setViewRoundCorner(UIView *view, CGFloat radius);		//radius:圆角半径
	
	// 创建UILabel, 文本居中显示  
	UILabel *createLabel(const CGRect *rect, const NSString *title);
	
	// 创建UIButton, 文本居中显示
	UIButton *createButton(const CGRect *rect, const NSString *title);
	
	// 设置UIButton的背景图片
	void setButtonBgImg(UIButton *btn, const NSString *normalBgImg, const NSString *selectedBgImg);
	
	// 以图片为填充背景  NB.可能背景会出现一条黑线
	void setBkColorByImage(UIView *view, NSString *imgName);
	
	// 获取UIColor的RGBA的值
	void getRGBAValue(const UIColor *color, 
	CGFloat *red, CGFloat *green, CGFloat *blue, CGFloat *alpha);
	
	CGFloat getRedValue(const UIColor *color);
	CGFloat getGreenValue(const UIColor *color);
	CGFloat getBlueValue(const UIColor *color);
	CGFloat getAlphaValue(const UIColor *color);
	
	// 由RGB的值获得CGColorRef指针
	CGColorRef createCGColorRefByRGB(const CGFloat red, const CGFloat green, const CGFloat blue, const CGFloat alpha);
	void releaseCGColorRef(CGColorRef colorRef);
	
	// 由UIColor获得CGColorRef指针
	CGColorRef getCGColorRefByUIColor(const UIColor *color);
	
	// 画弧形
	void drawArc(CGContextRef ctx, CGFloat radius, CGFloat x, CGFloat y, 
				 CGFloat startArc, CGFloat endArc, int clockWise,
				 CGFloat red, CGFloat green, CGFloat blue, CGFloat alpha);
	
	void drawArcByUIColor(CGContextRef ctx, CGFloat radius, CGFloat x, CGFloat y, 
				 CGFloat startArc, CGFloat endArc, int clockWise,
				 const UIColor *color);
	
	// 移除所有子view
	void removeAllSubviews(UIView *view);
	
	// 隐藏所有子view
	void hideAllSubViews(const UIView *view);
	
	// 创建一个指定区域大小的view
	UIView *createView(const CGRect *rect);
	
	// 创建一个和指定view相同大小的view
	UIView *createViewByView(const UIView *view);
	
	// 创建一个指定区域大小的透明view
	UIView *createTransparentView(const CGRect *rect);
	
	// 创建一个和指定view相同大小的透明view
	UIView *createTransparentViewByView(const UIView *view);
	
	// 显示view
	void showView(UIView *view);
	
	// 隐藏view
	void hideView(UIView *view);
	
	// 根据字符串的字体大小获取字符串的像素长度
	CGFloat getStrPixelLenByFontSize(NSString *str ,NSInteger fontSize);
	
	// 根据字符串的字体大小获取字符串的像素高度
	CGFloat getStrPixelHeightByFontSize(NSString *str ,NSInteger fontSize);
	
	// 获取字符串中字符下标从前到后，总长度小于等于指定像素长度的最大下标的值
	NSInteger getMaxIndexLessEqualToLen(const NSString *str, const NSInteger fontSize, const int maxLen);
	
	// 获取UITextEffectsWindow的指针
	UIWindow *getTextEffectsWindow();
	
#ifdef __cplusplus
}
#endif
	
//获取View的x、y、宽度、高度
#define	GET_VIEW_X(ctlName)				((ctlName).frame.origin.x)
#define	GET_VIEW_Y(ctlName)				((ctlName).frame.origin.y)
#define	GET_VIEW_WIDTH(ctlName)			((ctlName).frame.size.width)
#define	GET_VIEW_HEIGHT(ctlName)		((ctlName).frame.size.height)

//设置View的x、y、宽度、高度
#define	SET_VIEW_X(ctlName, newX)	\
		{				\
			CGRect rect = ctlName.frame;	\
			rect.origin.x = (newX);			\
			ctlName.frame = rect;			\
		}

#define	SET_VIEW_Y(ctlName, newY)	\
		{				\
			CGRect rect = ctlName.frame;	\
			rect.origin.y = (newY);			\
			ctlName.frame = rect;			\
		}

#define	SET_VIEW_WIDTH(ctlName, newWidth)	\
		{				\
			CGRect rect = ctlName.frame;	\
			rect.size.width = (newWidth);	\
			ctlName.frame = rect;			\
		}

#define	SET_VIEW_HEIGHT(ctlName, newHeight)	\
		{				\
			CGRect rect = ctlName.frame;	\
			rect.size.height = (newHeight);	\
			ctlName.frame = rect;			\
		}

#define	SET_VIEW_FRAME(ctlName, x, y, width, height)	\
		{				\
			SET_VIEW_X(ctlName, x);				\
			SET_VIEW_Y(ctlName, y);				\
			SET_VIEW_WIDTH(ctlName, width);		\
			SET_VIEW_HEIGHT(ctlName, height);	\
		}	

// 获取可滚动视图的内容总宽度和总高度
#define	GET_VIEW_CONTENT_WIDTH(view)	(view.contentSize.width)
#define	GET_VIEW_CONTENT_HEIGHT(view)	(view.contentSize.height)

//设定是否允许多点触摸
#define	ALLOW_MULTIPLE_TOUCH(isAllowOrNot)	\
		- (BOOL)isMultipleTouchEnabled	\
		{		\
			return isAllowOrNot;		\
		}

//刷新界面
#define	UPDATE_VIEW(view)	[view setNeedsDisplay]

#endif	//OBJC_MACRO

#endif	//CC_UI_VIEW